// 关于购物车 的公共状态
// vue3的公共状态管理 采用pinia 替代vuex

// pinia 和vuex的区别
// 1.pinia 更符合了 vuex的组合式api的开发方式
// 2.pinia 没有mutations 只有actions 也不需要modules 去模块化 本身就是模块化设计
// 3.pinia 没有命名空间的概念 每个store都是独立的

import { defineStore } from 'pinia'

// defineStore(id唯一标识，{配置项})
export const cartStore = defineStore("cart", {

  state: () => ({
    cartList: ["苹果16promax", "华为mate70Rs", "华为mateXt"],
    cartNum: 0
  }),
  // pinia 没有mutations 只有actions 
  actions: { //直接能去修改state的值  actions 里面可以写异步
    addCart (num) {
      // 可以使用this 操作state的值
      this.cartNum += num;
    },
    changeCart (item) {
      this.cartList.push(item)
    }
  },
  getters: {
    cartNums: state => state.cartNum * 2
  },
  persist: { //每个模块都需要单独的配置持久化
    key: "cart",
    storage: window.localStorage
  }
})


// 个人中心
export const userStore = defineStore('user', {
  state: () => ({
    userInfo: {
      name: "张三",
      age: 18
    }
  }),
  actions: {
    changeUserInfo (obj) {
      this.userInfo = obj
    }
  },
  getters: {

  }
})